home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / HandHeldPCPro30 / sdk.exe / Jupiter SDK / data1.cab / Emulation_Include_Files / rio.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-02-19  |  11.6 KB  |  330 lines

  1. /*********************************************************************
  2.  File:              rio.h
  3.  Description:   Radio Device Driver
  4.  *********************************************************************
  5.           Copyright (c) 1997 Microsoft Corporation
  6.  *********************************************************************/
  7. #if !defined(RIO_H)
  8. #define RIO_H
  9.  
  10. // Include <wis.h> first
  11.  
  12. #define RADIO_PROGRAM                       1
  13. #define RADIO_REGISTER                      2
  14. #define RADIO_GET_DRIVER_INFO               3
  15. #define RADIO_GET_MANUFACTURER_INFO         4
  16. #define RADIO_GET_HW_INFO                   5
  17. #define RADIO_GET_CARRIER_INFO              6
  18. #define RADIO_GET_ADDRESS_INFO              7
  19. #define RADIO_GET_GROUP_INFO                8
  20. #define RADIO_GET_KEY_INFO                  9
  21. #define RADIO_GET_STATUS                    10
  22. #define RADIO_GET_STATISTICS                11
  23. #define RADIO_SET_STATUS                    12
  24. #define RADIO_SET_STATISTICS                13
  25. #define RADIO_SET_EXTRA_INFO_STRIP_RULES    14
  26. #define RADIO_CRYPT_DERIVE_KEY              15
  27. #define RADIO_READ_MSG_INFO                 16
  28. #define RADIO_READ_MSG_DATA                 17
  29. #define RADIO_WRITE_MSG_INFO                18
  30. #define RADIO_WRITE_MSG_DATA                19
  31. #define RADIO_LOCK                          20
  32. #define RADIO_TEST_MSG                      100
  33.  
  34. #define ADDRESS_FLAG_ENABLE                 1
  35. #define ADDRESS_FLAG_PRIORITY               2
  36. #define ADDRESS_FLAG_AC_ONLY                4
  37.  
  38. #define GROUP_FLAG_ENABLE                   1
  39. #define GROUP_FLAG_PRIORITY                 2
  40. #define GROUP_FLAG_AC_ONLY                  4
  41.  
  42. #define RADIO_PGM_OPERATION_PROGRAM         1
  43. #define RADIO_PGM_OPERATION_UNPROGRAM       2
  44.  
  45. #define RADIO_PGM_TYPE_CARRIER              1
  46. #define RADIO_PGM_TYPE_KEY                  2
  47. #define RADIO_PGM_TYPE_ADDRESS              3
  48. #define RADIO_PGM_TYPE_GROUP                4
  49.  
  50. #define DATA_MESSAGE                        1
  51. #define DATA_RESPONSE                       2
  52. #define DATA_ERRORS                         3
  53. #define DATA_OEM                            4
  54.  
  55. typedef struct _radio_reg {
  56.     WORD wStructSize;
  57.     DWORD dwMemberValidMask;
  58.     DWORD dwStateChange;
  59.     DWORD dwCauseWakeup;
  60.     BYTE Filler;
  61.     BYTE EventNameLen;
  62. //  BYTE EventName[EventNameLen];
  63. } RADIO_REG, *LPRADIO_REG;
  64.  
  65. typedef struct _radio_driver_info {
  66.     WORD wStructSize;
  67.     DWORD dwMemberValidMask;
  68.     BYTE MajorVersionDriver;
  69.     BYTE MinorVersionDriver;
  70.     FILETIME DateTimeDriverRelease;
  71.     WORD wDriverDescriptionLen;
  72. //  BYTE DriverDescription[wDriverDescriptionLen];
  73. } RADIO_DRIVER_INFO, *LPRADIO_DRIVER_INFO;
  74.  
  75. typedef struct _radio_manufacturer_info {
  76.     WORD wStructSize;
  77.     DWORD dwMemberValidMask;
  78.     BYTE ManufacturerNameLen;
  79.     BYTE Filler;
  80.     WORD wManufacturerDescriptionLen;
  81. //  BYTE ManufacturerName[ManufacturerNameLen];
  82. //  BYTE ManufacturerDescription[wManufacturerDescriptionLen];
  83. } RADIO_MANUFACTURER_INFO, *LPRADIO_MANUFACTURER_INFO;
  84.  
  85. typedef struct _radio_hw_info {
  86.     WORD wStructSize;
  87.     DWORD dwMemberValidMask;
  88.     BYTE MajorVersionHW;
  89.     BYTE MinorVersionHW;
  90.     FILETIME DateTimeHWRelease;
  91.     BYTE HWFormFactor;
  92.     BYTE CommunicationType;
  93.     WORD wCapability;
  94.     BYTE Protocol;
  95.     BYTE PowerLevel;
  96.     BYTE TxSignalLevel;
  97.     BYTE RxSignalLevel;
  98.     DWORD dwBufferSize;
  99.     BYTE NumAddresses;
  100.     BYTE NumGroups;
  101.     BYTE NumKeys;
  102.     BYTE Filler;
  103.     BYTE SerialNumberLen;
  104.     WORD wHWDescriptionLen;
  105. //  BYTE SerialNumber[SerialNumberLen];
  106. //  BYTE HWDescription[wHWDescriptionLen];
  107. } RADIO_HW_INFO, *LPRADIO_HW_INFO;
  108.  
  109. typedef struct _radio_carrier_info {
  110.     WORD wStructSize;
  111.     DWORD dwmemberValidMask;
  112.     DWORD dwFrequency;
  113.     BYTE UserIDLen;
  114.     BYTE CarrierNameLen;
  115.     WORD wCarrierDescriptionLen;
  116. //  BYTE UserId[UserIDLen];
  117. //  BYTE CarrierName[CarrierNameLen];
  118. //  BYTE CarrierDescription[wCarrierDescriptionLen];
  119. } RADIO_CARRIER_INFO, *LPRADIO_CARRIER_INFO;
  120.  
  121. typedef struct _radio_address {
  122.     WORD wStructSize;
  123.     DWORD dwMemberValidMask;
  124.     BYTE AddressNumber;
  125.     BYTE Status;
  126.     BYTE ExpirationDate[2];
  127.     BYTE Filler;
  128.     BYTE KeyTagLen;
  129.     BYTE AddressTagLen;
  130.     BYTE AddressNameLen;
  131.     WORD wAddressDescriptionLen;
  132.     WORD wAddressInfoLen;
  133. //  BYTE KeyTag[KeyTagLen];
  134. //  BYTE AddressTag[AddressTagLen];
  135. //  BYTE AddressName[AddressNameLen];
  136. //  BYTE AddressDescription[wAddressDescriptionLen];
  137. //  BYTE AddressInfo[wAddressInfoLen];
  138. } RADIO_ADDRESS, *LPRADIO_ADDRESS;
  139. #define RADIO_ADDRESS_MVM_NUMBER            0x0001  // AddressNumber field is valid
  140. #define RADIO_ADDRESS_MVM_STATUS            0x0002  // Status field is valid
  141. #define RADIO_ADDRESS_MVM_EXPIRATION_DATE   0x0004  // ExpirationDate field is valid
  142. #define RADIO_ADDRESS_MVM_KEY_TAG_LEN       0x0008  // KeyTagLen field is valid
  143. #define RADIO_ADDRESS_MVM_TAG_LEN           0x0010  // AddressTagLen field is valid
  144. #define RADIO_ADDRESS_MVM_NAME_LEN          0x0020  // AddressNameLen field is valid
  145. #define RADIO_ADDRESS_MVM_DESCRIPTION_LEN   0x0040  // AddressDescriptionLen field is valid
  146. #define RADIO_ADDRESS_MVM_INFO_LEN          0x0080  // AddressInfoLen field is valid
  147.  
  148. typedef struct _radio_group {
  149.     WORD wStructSize;
  150.     DWORD dwMemberValidMask;
  151.     WORD wGroupNumber;
  152.     BYTE Status;
  153.     BYTE GroupCode;
  154.     BYTE ExpirationDate[2];
  155.     BYTE KeyTagLen;
  156.     BYTE AddressTagLen;
  157.     BYTE GroupTagLen;
  158.     BYTE GroupNameLen;
  159.     WORD wGroupDescriptionLen;
  160. //  BYTE KeyTag[KeyTagLen];
  161. //  BYTE AddressTag[AddressTagLen];
  162. //  BYTE GroupTag[GroupTagLen];
  163. //  BYTE GroupName[GroupNameLen];
  164. //  BYTE GroupDescription[wGroupDescriptionLen];
  165. } RADIO_GROUP, *LPRADIO_GROUP;
  166. #define RADIO_GROUP_MVM_NUMBER              0x0001  // GroupNumber field is valid
  167. #define RADIO_GROUP_MVM_STATUS              0x0002  // Status field is valid
  168. #define RADIO_GROUP_MVM_CODE                0x0004  // GroupCode field is valid
  169. #define RADIO_GROUP_MVM_EXPIRATION_DATE     0x0008  // ExpirationDate field is valid
  170. #define RADIO_GROUP_MVM_KEY_TAG_LEN         0x0010  // KeyTag field is valid
  171. #define RADIO_GROUP_MVM_ADDRESS_TAG_LEN     0x0020  // AddressTag field is valid
  172. #define RADIO_GROUP_MVM_TAG_LEN             0x0040  // GroupTag field is valid
  173. #define RADIO_GROUP_MVM_NAME_LEN            0x0080  // GroupName field is valid
  174. #define RADIO_GROUP_MVM_DESCRIPTION_LEN     0x0100  // GroupDescription field is valid
  175.  
  176. typedef struct _radio_key {
  177.     WORD wStructSize;
  178.     DWORD dwMemberValidMask;
  179.     BYTE KeyNumber;
  180.     BYTE AlgCode;
  181.     BYTE KeyTagLen;
  182.     BYTE KeyLen;
  183. //  BYTE KeyTag[KeyTagLen];
  184. //  BYTE Key[KenLen];
  185. } RADIO_KEY, *LPRADIO_KEY;
  186. #define RADIO_KEY_MVM_NUMBER                0x0001  // KeyNumber field is valid
  187. #define RADIO_KEY_MVM_ALG_CODE              0x0002  // AlgCode field is valid
  188. #define RADIO_KEY_MVM_TAG_LEN               0x0004  // KeyTag field is valid
  189. #define RADIO_KEY_MVM_LEN                   0x0008  // KeyLen field is valid
  190.  
  191. typedef struct _radio_status {
  192.     WORD wStructSize;
  193.     DWORD dwMemberValidMask;
  194.     DWORD dwStatus;
  195. } RADIO_STATUS, *LPRADIO_STATUS;
  196.  
  197. typedef struct _radio_statistics {
  198.     WORD wStructSize;
  199.     DWORD dwMemberValidMask;
  200.     DWORD dwStatus;
  201.     DWORD dwNumPacketsMonitored;
  202.     DWORD dwNumPacketsReceived;
  203.     DWORD dwNumErrorPackets;
  204.     DWORD dwNumTotalBytesReceived;
  205.     DWORD dwNumErrorBytes;
  206.     DWORD dwNumPacketsSent;
  207.     DWORD dwNumPacketsRetried;
  208.     DWORD dwNumBytesSent;
  209.     DWORD dwNumBytesRetried;
  210.     WORD wOEMStats;
  211. //  VOID OEMStats;
  212. } RADIO_STATISTICS, *LPRADIO_STATISTICS;
  213.  
  214. typedef struct _radio_msg_part_info {
  215.     BYTE PartType;
  216. //  BYTE Filler;
  217.     DWORD dwOffset;
  218.     DWORD dwSize;
  219. } RADIO_MSG_PART_INFO, *LPRADIO_MSG_PART_INFO;
  220.  
  221. enum RADIO_MSG_TYPE  {
  222.     RADIO_MSG_TYPE_NO_TYPE              = 0x00,
  223.     RADIO_MSG_TYPE_NUMERIC_MSG          = 0x01, // This is a numeric message
  224.     RADIO_MSG_TYPE_ALPHA_MSG            = 0x02, // This is an alpha message
  225.     RADIO_MSG_TYPE_BINARY_MSG           = 0x03, // This is a binary message
  226.     RADIO_MSG_TYPE_TOD_UPDATE_MSG       = 0x04, // This is a TOD update message
  227.     RADIO_MSG_TYPE_OTAP_MSG             = 0x05, // This is an OTAP (Over the air programming) message
  228.     RADIO_MSG_TYPE_CANNED_RESPONSE_MSG  = 0x06, // This is a canned response message
  229.     RADIO_MSG_TYPE_NORMAL_RESPONSE_MSG  = 0x07, // This is a normal response message
  230.     RADIO_MSG_TYPE_OEM_MSG              = 0x80  // This is an OEM specific message [0x80-0xEF]
  231. };
  232.  
  233. enum RADIO_MSG_PRIORITY  {
  234.     RADIO_MSG_PRIORITY_NO_PRIORITY      = 0x00,
  235.     RADIO_MSG_PRIORITY_HIGH_PRIORITY    = 0x01,
  236.     RADIO_MSG_PRIORITY_MEDIUM_PRIORITY  = 0x02,
  237.     RADIO_MSG_PRIORITY_LOW_PRIORITY     = 0x03
  238. };
  239.  
  240. enum RADIO_MSG_FLAG  {
  241.     RADIO_MSG_FLAG_NO_VALUE             = 0x00,
  242.     RADIO_MSG_FLAG_MAIL_DROP_MSG        = 0x01,    // This is a mail drop msg
  243.     RADIO_MSG_FLAG_MSG_FRAGMENT         = 0x02     // incomplemet message
  244. };
  245.  
  246. enum RADIO_MSG_ERRORFLAG  {
  247.     RADIO_MSG_ERRORFLAG_NO_VALUE        = 0x00,
  248.     RADIO_MSG_ERRORFLAG_ERRORS          = 0x01,     // message contains errors
  249.     RADIO_MSG_ERRORFLAG_OUT_OF_ORDER    = 0x02      // message is out of order
  250. };
  251.  
  252. typedef struct _radio_msg_info {
  253.     WORD wStructSize;
  254.     DWORD dwMemberValidMask;
  255.     BYTE MsgType;
  256.     BYTE MsgPriority;
  257.     BYTE MsgFlags;
  258.     BYTE NumParts;
  259.     WORD wErrorFlags;
  260.     WORD wMsgSequenceNumber;
  261.     FILETIME ReceivedDateTime;
  262.     BYTE MsgIdLen;
  263.     BYTE ResponseIdLen;
  264.     BYTE AddressTagLen;
  265.     BYTE GroupTagLen;
  266. //  BYTE MsgId[MsgIdLen];
  267. //  BYTE ResponseId[ResponseIdLen];
  268. //  BYTE AddressTag[AddressTagLen];
  269. //  BYTE GroupTag[GroupTagLen];
  270. //  RADIO_MSG_PART_INFO PartInfo;
  271. } RADIO_MSG_INFO, *LPRADIO_MSG_INFO;
  272.  
  273.  
  274. //********************************************************************//
  275.  
  276. #define HRADIO_TYPE_END                     (-1)
  277. #define HRADIO_TYPE_FUNCTION                1
  278. #define HRADIO_TYPE_FILTER                  2
  279.  
  280. #define HRADIO_FUNCTION_WAKEUP              0
  281. #define HRADIO_FUNCTION_ANALYZEMSG          1
  282. #define HRADIO_FUNCTION_FILTERMSG           2
  283.  
  284. #define CALLPADDR(CtlBlk, x)
  285. #define CALLVADDR(CtlBlk, x)
  286.  
  287. typedef struct _hradio_block {
  288.     DWORD dwId;
  289.     DWORD PAddr;
  290.     DWORD VAddr;
  291.     DWORD dwSize;
  292. } HRADIO_BLOCK, *LPHRADIO_BLOCK;
  293.  
  294. #define MAKE_HRADIO_FUNCTION_ID(FunctionType, Extra1, Extra2)   \
  295.     MAKELONG(MAKEWORD(HRADIO_TYPE_FUNCTION, FunctionType), MAKEWORD(Extra1, Extra2))
  296.     
  297. #define MAKE_HRADIO_FILTER_ID(AddressNumber, wGroupCode)   \
  298.     MAKELONG(MAKEWORD(HRADIO_TYPE_FILTER, AddressNumber), wGroupCode)
  299.  
  300. //********************************************************************//
  301.  
  302.  
  303.  
  304.  
  305. // fix
  306. #define RADIO_SUSPEND_ON                    0
  307. #define RADIO_HAS_POWER                     0
  308. #define RADIO_SIGNAL_INFO                   0
  309. // end fix
  310.  
  311. #define RADIO_EVENT_PGM                     0x0001
  312. #define RADIO_EVENT_TOD                     0x0002
  313. #define RADIO_EVENT_FLUSH                   0x0008
  314. #define RADIO_EVENT_MSG                     0x0010
  315. #define RADIO_EVENT_POWER                   0x0020
  316. #define RADIO_EVENT_RANGE                   0x0040
  317. #define RADIO_EVENT_ALL                     0xFFFF
  318.  
  319. #define RADIO_STATUS_STATE                  0x0001
  320. #define RADIO_STATUS_ENABLED                0x0001
  321. #define RADIO_STATUS_PWRDOWNENABLED         0x0002
  322. #define RADIO_STATUS_EMPTY                  0x0004
  323. #define RADIO_STATUS_OVERFLOW               0x0008
  324. #define RADIO_STATUS_MSGCOMPLETE            0x0010
  325. #define RADIO_STATUS_BATTERY_LOW            0x0020
  326. #define RADIO_STATUS_OUTOFRANGE             0x0040
  327. #define RADIO_STATUS_HARDWARE_PRESENT       0x0100
  328.  
  329. #endif  // RIO_H
  330.